import matplotlib
import matplotlib.pyplot as plt
from math import comb

# 设置 matplotlib 支持中文显示
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 'SimHei' 是一种常见的中文黑体字体
matplotlib.rcParams['axes.unicode_minus'] = False  # 正确显示负号

def qsum(n, k, p=0.1):
    q = 0
    for i in range(k + 1):
        q += comb(n, i) * (p ** i) * ((1 - p) ** (n - i))
    return q

def main():
    n_values = []
    k1_values = []
    k2_values = []
    aerf1 = 0.05
    aerf2 = 0.1

    for n in range(20, 81, 10):
        k1 = 0
        k2 = 0
        while qsum(n, k1) < (1 - aerf1):
            k1 += 1
        while qsum(n, k2) < (1 - aerf2):
            k2 += 1
        n_values.append(n)
        k1_values.append(k1)
        k2_values.append(k2)

    # 绘制折线图
    plt.figure(figsize=(10, 5))
    plt.plot(n_values, k1_values, label='95%置信区间', marker='o')
    plt.plot(n_values, k2_values, label='90%置信区间', marker='x')
    plt.xlabel('样本容量')
    plt.ylabel('临界值')
    plt.title('配件总量与样本量之间的关系')
    plt.legend()
    plt.grid(True)
    plt.show()

if __name__ == "__main__":
    main()